const systemInfo = xhs.getSystemInfoSync();

  $config = require("config.js"),
 
  _ = require("pages/Common/underscore.js"),
  $appId = $config.appId,
  $host = $config.host, //业务域名
  $resHost = $config.resHost, //资源域名
  

App({
  globalData: {
    hasLogin: false,
    openid: null,
    systemInfo,
    platform: systemInfo.platform.toLocaleLowerCase().includes('ios') ? 'ios' : 'android',
    userInfo: null,
    token: null,
  },

  getLaunchOptionsSync(e) {
    console.log('App:getLaunchOptionsSync', e);
  },

  getEnterOptionsSync(e) {
    console.log('App:getEnterOptionsSync', e);
  },

  onError(e) {
    console.log('App:onError=======', e);
  },

  onLaunch(opts, data) {
    console.log('App:onLaunch========', opts);

    this.updateManager = xhs.getUpdateManager();
    this.updateManager.onUpdateReady(() => {
      xhs.showModal({
        title: '更新提示',
        content: '新版本已经准备好，是否重启小程序？',
        confirmText: '重启',
        success: res => {
          if (res.confirm) {
            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
            this.updateManager.applyUpdate();
          }
        },
      });
    });

    this.login();

    if (data && data.path) {
      xhs.navigateTo({
        url: data.path,
      });
    }

    // 检查缓存中的用户信息
    const cachedUserInfo = xhs.getStorageSync('userInfo');
    if (cachedUserInfo) {
      this.globalData.userInfo = cachedUserInfo;
    }
  },

  onPageNotFound(opts) {
    console.log('App:onPageNotFound========', opts);
  },

  onShow(opts) {
    console.log('App:onShow=======', opts);
  },

  onHide(opts) {
    console.log('App:onHide=======', opts);
  },
  
  // lazy loading openid
  getUserOpenId(callback) {
    const self = this;
    if (self.globalData.openid) {
      callback(null, self.globalData.openid);
    } else {
      xhs.login({
        success(data) {
          console.log('login success:', data);
        },
        fail(err) {
          console.log('xhs?.login 接口调用失败，将无法正常使用开放接口等服务', err);
          callback(err);
        },
      });
    }
  },

  // 用户登录方法
  login() {
    const that = this;

    // 1. 调用小红书登录接口，获取 code
    xhs.login({
      success(res) {
        if (res.code) {
          console.log('登录成功，获取到的 code:', res.code);

          // 2. 将 code 发送到后端，换取用户信息和 token
          that.getUserInfo(res.code);
        } else {
          console.error('登录失败:', res);
        }
      },
      fail(err) {
        console.error('登录接口调用失败:', err);
      },
    });
  },

  // 获取用户信息
  getUserInfo(code) {
    const that = this;

    // 3. 调用后端接口，用 code 换取用户信息
    console.log('appId:', $appId)
      console.log('jsCode:', code)
    xhs.request({
      url: 'https://wx2.xjuke.com/api/redbook/login', // 替换为实际的后端接口地址
      method: 'POST',
      data: {
        appId: $appId,
        jsCode: code // 将 code 发送给后端
      },
      
      success(res) {
        if (res.statusCode === 200 && res.data.errCode === 0) {
          console.log('获取用户信息成功:', res.data);

          // 4. 将用户信息和 token 存储到全局变量中
          that.globalData.userInfo = res.data.userInfo;
          that.globalData.token = res.data.token;

          // 5. 触发全局事件，通知其他页面用户已登录
          that.triggerLoginSuccess();
        } else {
          console.error('获取用户信息失败:', res);
        }
      },
      fail(err) {
        console.error('请求后端接口失败:', err);
      },
    });
  },

  // 触发登录成功事件
  triggerLoginSuccess() {
    const eventChannel = this.getOpenerEventChannel();
    if (eventChannel) {
      eventChannel.emit('loginSuccess', {
        userInfo: this.globalData.userInfo,
        token: this.globalData.token,
      });
    }
  },
});
